Automatyzacja zadań (jobs) w CGC SDK
CGC SDK umożliwia użytkownikom budowanie potoków oraz włączanie logiki do zarządzania zadaniami.
Do połączenia z platformą wymagany jest ważny kontekst, a uprawnienia telemetryczne muszą być ustawione, aby uniknąć przerwania procesu.
Podstawowe Zastosowanie
Tworzenie i usuwanie zadań można zrealizować w następujący sposób:
Tworzenie zadania
Proste tworzenie zadania:
import cgc.sdk as cgc
# Tworzenie zadania
response_created = cgc.job.job_create("nazwa", "nazwa-obraz:tag", cpu = 12, memory = 128,
gpu = 1, gpu_type="NVIDIA-A100-SXM4-80GB")
Tworzenie zadania z zamontowanym wolumenem na określonej ścieżce:
import cgc.sdk as cgc
# Tworzenie zadania z zamontowanym woluminem
response_created = cgc.job.job_create("nazwa", "nazwa-obraz:tag", cpu = 12, memory = 128,
gpu = 1, gpu_type="NVIDIA-A100-SXM4-80GB", volumes=["dane-treningowe"], volume_full_path="/tmp/dane")
Dane zostaną zamontowane w katalogu /tmp/dane.
Jeśli chcesz użyć wielu wolumenów dla zadania, możesz przekazać listę wolumenów:
Wolumeny zostaną zamontowane w: /usr/'nazwa_wolumenu'
import cgc.sdk as cgc
# Tworzenie zadania z wieloma zamontowanymi wolumenami
response_created = cgc.job.job_create("nazwa", "nazwa-obraz:tag", cpu = 12, memory = 128,
gpu = 1, gpu_type="NVIDIA-A100-SXM4-80GB", volumes=["wol-1", "wol-2"])
Jeśli nie musisz monitorować statusu zadania, możesz ustawić parametr ttl_seconds_after_finished, aby automatycznie usunąć zadanie po określonym czasie:
import cgc.sdk as cgc
# Tworzenie zadania z TTL
response_created = cgc.job.job_create("nazwa", "nazwa-obraz:tag", cpu = 12, memory = 128,
gpu = 1, gpu_type="NVIDIA-A100-SXM4-80GB", ttl_seconds_after_finished=3600)
Argumenty funkcji
| Nazwa argumentu | Wartość | Domyślnie | Opis | Wymagane |
|---|---|---|---|---|
| name | string | Brak | Nazwa zadania | * |
| image_name | string | Brak | Nazwa obrazu z repozytorium publicznego lub prywatnego | * |
| repository_secret | string | Brak | Nazwa sekretu zapewnionego przez zespół CGC dla repo prywatnych | |
| cpu | int | 1 | Liczba vCPU | |
| memory | int [GB] | 2 | Ilość pamięci RAM w GB | |
| shm_size | int [GB] | 0 | Rozmiar pamięci współdzielonej wyciętej z pamięci RAM | |
| gpu | int | 0 | Liczba GPU | |
| gpu_type | string | "" | Typ GPU, nazwa jak w cgc status (np. NVIDIA-RTX-A5000) | |
| volumes | lista | [] | Lista wolumenów do zamontowania | |
| volume_full_path | string | Brak | Ścieżka, w której wolumen zostanie zamontowany | |
| startup_command | string | Brak | Jeśli nie określono w obrazie Docker | |
| cgc_data | lista | [] | Lista parametrów CGC w formacie klucz=wartość | |
| environment_data | lista | [] | Lista zmiennych środowiskowych w formacie klucz=wartość | |
| arguments_data | lista | [] | Lista argumentów przekazywanych do kontenera | |
| config_maps_data | lista | [] | Lista parametrów config map w formacie klucz=wartość | |
| ttl_seconds_after_finished | int | Brak | Czas życia w sekundach po zakończeniu zadania |
active_deadline_seconds jest dostępny tylko w CLI (cgc job create --ads); job_create w SDK nie przyjmuje tego argumentu.
Usuwanie zadania
import cgc.sdk as cgc
# Usuwanie aplikacji
response_deleted = cgc.job.job_delete("nazwa")
Argumenty funkcji
| Nazwa argumentu | Wartość | Domyślnie | Opis | Wymagane |
|---|---|---|---|---|
| name | string | Brak | Nazwa zadania | * |
Lista uruchomionych i oczekujących zadań
import cgc.sdk as cgc
# Pobieranie statusu aplikacji
response_list = cgc.job.job_list()